home *** CD-ROM | disk | FTP | other *** search
- #include<stdlib.h>
- #include<kiwi_inc.h>
- #include<kiwipro.h>
-
-
- MENU spiel_menu[3]={
- "Spiel Starten ",0,1,"",
- "Spiel Optionen",0,6,"",
- "Beenden ",0,1,"",
- };
-
-
-
-
- /******** Globale Variable */
-
- int but_form=KIWI_MODE; /* Form der Schalter */
- int but_shad=SHADOW_ON; /* Schalter mit Schatten */
- int but_klick=KLICK_ON; /* Schalter mit Klicken */
- int freq_ein=100; /* Einschaltfrequenz */
- int ton_ein=2; /* Einschaltdauer */
- int freq_aus=100; /* Ausschaltfrequenz */
- int ton_aus=2; /* Einschaltdauer */
-
- int play_anzahl=10; /* Anzahl Durchläufe */
- int play_button; /* Aktiver Schalter */
- int error; /* Abbruchbedingung */
- int play_typ=3; /* 6x5 */ /* Spielflächentyp */
- int max_button; /* Anzahl Schalter */
-
-
- BUTTON *but[30]; /* Pointer auf die Schalter */
- char *titel[30]={ /* Schlaterbeschriftungsfeld */
- "Autton",
- "Button",
- "Cutton",
- "Dutton",
- "Eutton",
- "Futton",
- "Gutton",
- "Hutton",
- "Iutton",
- "Jutton",
- "Kutton",
- "Lutton",
- "Mutton",
- "Nutton",
- "Outton",
- "Putton",
- "Qutton",
- "Rutton",
- "Sutton",
- "Tutton",
- "Uutton",
- "Vutton",
- "Wutton",
- "Xutton",
- "Yutton",
- "Zutton",
- "Autton",
- "Button",
- "Cutton",
- "Dutton",};
-
-
- ZEIT start,ende,diff_time; /* Definitionen der benötigten Zeitvariablen */
- ULONG min,max,norm; /* Millisekundenzähler */
-
-
- int dateimenu(void);
- int spielmenu(void);
- int festmenu(void);
- int spieloptionen(void);
- int play(void);
- int action(void);
- int set_button(void);
- int init_tools(void);
- int reset_tools(void);
- void check_if_get_help(void);
-
-
- /* Macro to get a random integer within a specified range */
- #define getrandom( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min))
-
-
-
- /************************************************************************/
- int reaktionstest()
- {
- int wahl=0,ende=0;
- WINDOW win;
-
- win=load_window("SPIELINT .WND");
- wait_input();
- close_window(win);
-
- ende=win=0;
- do
- {
- wahl=choose_menu(spiel_menu,3,45,10,&win);
- switch(wahl){
- case 0: play(); /* Starte Spiel */
- break;
-
- case 1: spieloptionen(); /* Spieloptionen */
- break;
-
- case 2: ende=1;
-
- }
-
- }while(!ende);
-
- close_window(win);
-
- return(0);
- }
-
-
-
- int spieloptionen()
- {
- static WINDOW win=0;
-
- win=load_window("SPIELOPT.WND");
- scanf_mask(win,0,"x",&play_typ,
- &play_anzahl
- /* Button Ok */);
-
- close_window(win);
- return(0);
- }
-
-
-
-
- /************************************************************************/
- int play()
- {
- int i,x,y,dx,dy,max_x,xa,ya;
- WINDOW win,win1;
- ULONG diff;
-
- /* Setze die Spielfläche nach gewählten Modus */
- if(play_typ==0) /* 3x3 */
- {
- xa=12;
- ya=3;
- dx=20;
- dy=6;
- max_x=70;
- max_button=9;
- }
- else if(play_typ==1) /* 4x4 */
- {
- xa=8;
- ya=2;
- dx=17;
- dy=5;
- max_x=76;
- max_button=16;
- }
- else if(play_typ==2) /* 5x5 */
- {
- xa=4;
- ya=1;
- dx=14;
- dy=4;
- max_x=74;
- max_button=25;
- }
- else if(play_typ==3) /* 5x5 */
- {
- xa=2;
- ya=1;
- dx=12;
- dy=4;
- max_x=74;
- max_button=30;
- }
- /* Seed the random number generator with current time. */
- srand( (unsigned)time( NULL ) );
-
- win=open_window("Spielfläche",2,2,78,24,DOPPELT); /* Spielfläche */
- y=ya;
- x=xa;
- for(i=0;i<max_button;i++) /* Erstelle Schalter */
- {
- but[i]=create_button(win,titel[i],0,6,x,y);
- x+=dx;
-
- if(x>=max_x)
- {
- y+=dy;
- x=xa;
- }
- }
-
- win1=open_window("",AM,AM,45,3,DOPPELT); /* Letzte Warnung */
- display_string("Wenn fertig, beliebige Taste zum Starten",win1,AM,2);
- wait_input();
- close_window(win1);
-
- max=norm=0l; /* Setze die Zeitdaten */
- min=1000000l;
- error=0;
- for(i=0;i<play_anzahl&& error!=(-1);i++)
- {
- set_button(); /* Aktivier Schalter */
- activ_button(but[play_button]); /* Setze den auf Aktiv */
- pieps(); /* Letzte Meldung */
- get_system_time(&start); /* Hole Startzeit */
- action(); /* warte auf Aktion des Spielers */
- get_system_time(&ende); /* Hole Endzeit */
- passiv_button(but[play_button]); /* Schalter auf aus */
- if(error==1)error=0; /* Weiterspielen ? ja */
-
- diff=sub_time(&diff_time,&start,&ende); /* Berechne Reaktionszeit */
- if(diff<min)min=diff; /* Kleiner als bisher */
- if(diff>max)max=diff; /* Größer als bisher */
- norm+=diff;
- }
- win1=open_window("Ergebnis",AM,AM,50,10,DOPPELT); /* Zeige Ergebnis */
- wlocate(win1,2,2);
- printw(win1,"Anzahl Durchläufe = %d \n",play_anzahl);
- printw(win1,"Minimale Reaktionszeit (ms) = %ld\n",min);
- printw(win1,"Maximale Reaktionszeit (ms) = %ld\n",max);
- printw(win1,"Durchschnittlich Reaktionszeit (ms) = %ld\n",norm/i);
- wait_input();
- close_window(win1);
-
- for(i=0;i<max_button;i++) /* Zerstöre Schalter */
- destroy_button(but[i]);
-
- close_window(win); /* Fenster weg */
-
- return(0);
- }
-
-
-
-
- /************************************************************************/
- int action()
- {
- int ts,ms;
- UINT mx,my;
-
-
- do
- {
- ts=input(); /* Tastatur */
- ms=mouse(&mx,&my); /* Maus */
-
- if(ts==27)error=(-1); /* Abbruch */
-
- if(get_input_status() & 8) /* Alt Taste und */
- {
- if(ts-65==play_button)error=1; /* Treffer */
- }
- if(ms==1 && is_mouse_inside_button(but[play_button]))error=1;
- /* Maustreffer */
- }while(!error); /* Bis Treffer oder Lustlos */
-
- if(error==1) /* Getroffen */
- {
- press_button(but[play_button]); /* Schalte Schalter ein */
- clear_input_qeue(); /* Warte bis alle Tassten los */
- release_button(but[play_button]); /* Schalte Schalter aus */
- }
- return(0);
- }
-
-
-
- /************************************************************************/
- int set_button()
- {
- int i,anzahl;
-
-
- anzahl=getrandom(40,140); /* Wie oft Durchlaufen */
-
- for(i=0;i<anzahl;i++) /* So oft Schalte */
- {
- play_button=getrandom(0,max_button-1); /* Welcher Schalter */
- activ_button(but[play_button]); /* Aktivieren */
- passiv_button(but[play_button]); /* Passivieren */
- }
- return(0);
- }
-